home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2010 April
/
PCWorld0410.iso
/
pluginy Firefox
/
60
/
60.xpi
/
chrome
/
webdeveloper.jar
/
content
/
webdeveloper
/
forms.js
< prev
next >
Wrap
Text File
|
2009-06-30
|
49KB
|
1,177 lines
// Clears all radio buttons
function webdeveloper_clearRadioButtons()
{
var clearedRadioButtons = 0;
var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
var documentLength = documentList.length;
var inputElement = null;
var inputElementList = null;
var inputElementsLength = null;
var pageDocument = null;
// Loop through the documents
for(var i = 0; i < documentLength; i++)
{
pageDocument = documentList[i];
inputElementList = pageDocument.getElementsByTagName("input");
inputElementsLength = inputElementList.length;
// Loop through all the input tags
for(var j = 0; j < inputElementsLength; j++)
{
inputElement = inputElementList[j];
// If the element is a radio button
if(inputElement.hasAttribute("type") && inputElement.getAttribute("type").toLowerCase() == "radio")
{
inputElement.checked = false;
clearedRadioButtons++;
}
else
{
// This stops the fields reordering
inputElement.setAttribute("type", inputElement.getAttribute("type"));
}
}
}
// If the hide informational dialogs preference is not set
if(!webdeveloper_getBooleanPreference("webdeveloper.informational.dialogs.hide", true))
{
var stringBundle = document.getElementById("webdeveloper-string-bundle");
var title = stringBundle.getString("webdeveloper_clearRadioButtons");
// If one radio button was cleared
if(clearedRadioButtons == 1)
{
webdeveloper_informationalDialog(title, stringBundle.getFormattedString("webdeveloper_clearRadioButtonsSingleResult"));
}
else
{
webdeveloper_informationalDialog(title, stringBundle.getFormattedString("webdeveloper_clearRadioButtonsMultipleResult", [clearedRadioButtons]));
}
}
}
// Converts form methods
function webdeveloper_convertFormMethods(method)
{
var convertedForms = 0;
var displayFormDetailsMenu = document.getElementById("webdeveloper-display-form-details-menu");
var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
var documentLength = documentList.length;
var form = null;
var formLength = null;
var formList = null;
var pageDocument = null;
// Loop through the documents
for(var i = 0; i < documentLength; i++)
{
pageDocument = documentList[i];
formList = pageDocument.forms;
formLength = formList.length;
// Loop through all the forms
for(var j = 0; j < formLength; j++)
{
form = formList[j];
// If this form is not already the right method
if((!form.hasAttribute("method") && method == "post") || (form.hasAttribute("method") && form.getAttribute("method").toLowerCase() != method))
{
form.setAttribute("method", method);
convertedForms++;
}
}
}
// Reapply the display form details style sheet if it is currently on - fixes bug with form method not updating
if(displayFormDetailsMenu.getAttribute("checked"))
{
webdeveloper_removeStyleSheet("webdeveloper-display-form-details", false);
webdeveloper_displayFormDetails(displayFormDetailsMenu, false);
}
// If the hide informational dialogs preference is not set
if(!webdeveloper_getBooleanPreference("webdeveloper.informational.dialogs.hide", true))
{
var stringBundle = document.getElementById("webdeveloper-string-bundle");
var title = stringBundle.getString("webdeveloper_convertFormMethods");
// If one form was converted
if(convertedForms == 1)
{
webdeveloper_informationalDialog(title, stringBundle.getFormattedString("webdeveloper_convertFormMethodsSingleResult", [method.toUpperCase()]));
}
else
{
webdeveloper_informationalDialog(title, stringBundle.getFormattedString("webdeveloper_convertFormMethodsMultipleResult", [convertedForms, method.toUpperCase()]));
}
}
}
// Converts select elements to text inputs
function webdeveloper_convertSelectElementsToTextInputs()
{
var convertedSelectElements = 0;
var displayFormDetailsMenu = document.getElementById("webdeveloper-display-form-details-menu");
var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
var documentLength = documentList.length;
var inputElement = null;
var pageDocument = null;
var parentNode = null;
var selectElement = null;
var selectElements = null;
// Loop through the documents
for(var i = 0; i < documentLength; i++)
{
pageDocument = documentList[i];
selectElements = pageDocument.getElementsByTagName("select");
// While there are select elements
while(selectElements.length > 0)
{
inputElement = pageDocument.createElement("input");
selectElement = selectElements[0];
parentNode = selectElement.parentNode;
inputElement.value = selectElement.value;
// If the select element has an id attribute
if(selectElement.hasAttribute("id"))
{
inputElement.setAttribute("id", selectElement.getAttribute("id"));
}
// If the select element has a name attribute
if(selectElement.hasAttribute("name"))
{
inputElement.setAttribute("name", selectElement.getAttribute("name"));
}
inputElement.setAttribute("type", "text");
parentNode.insertBefore(inputElement, selectElement);
webdeveloper_removeElement(selectElement);
convertedSelectElements++;
}
}
// Reapply the display form details style sheet if it is currently on - fixes bug with form method not updating
if(displayFormDetailsMenu.getAttribute("checked"))
{
webdeveloper_removeStyleSheet("webdeveloper-display-form-details", false);
webdeveloper_displayFormDetails(displayFormDetailsMenu, false);
}
// If the hide informational dialogs preference is not set
if(!webdeveloper_getBooleanPreference("webdeveloper.informational.dialogs.hide", true))
{
var stringBundle = document.getElementById("webdeveloper-string-bundle");
var title = stringBundle.getString("webdeveloper_convertSelectElementsToTextInputs");
// If one select element was converted
if(convertedSelectElements == 1)
{
webdeveloper_informationalDialog(title, stringBundle.getString("webdeveloper_convertSelectElementsToTextInputsSingleResult"));
}
else
{
webdeveloper_informationalDialog(title, stringBundle.getFormattedString("webdeveloper_convertSelectElementsToTextInputsMultipleResult", [convertedSelectElements]));
}
}
}
// Displays/hides the form details for the page
function webdeveloper_displayFormDetails(element)
{
var buttonElement = null;
var buttonElementList = null;
var buttonElementsLength = null;
var display = element.getAttribute("checked");
var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
var documentLength = documentList.length;
var inputElement = null;
var inputElementList = null;
var inputElementsLength = null;
var pageDocument = null;
var selectElement = null;
var selectElementList = null;
var selectElementsLength = null;
var spanElement = null;
var text = null;
var textAreaElement = null;
var textAreaElementList = null;
var textAreaElementsLength = null;
// Loop through the documents
for(var i = 0; i < documentLength; i++)
{
pageDocument = documentList[i];
inputElementList = pageDocument.getElementsByTagName("input");
inputElementsLength = inputElementList.length;
// Need to do this to stop the feature running twice
webdeveloper_removeAllElementsByXPath(pageDocument, "//span[@class='webdeveloper-display-form-details']");
// Loop through all the input tags
for(var j = 0; j < inputElementsLength; j++)
{
inputElement = inputElementList[j];
// If the input element is unhidden - need to do this to stop it running twice
if(inputElement.className.indexOf("webdeveloper-unhidden") != -1)
{
inputElement.className = webdeveloper_removeSubstring(inputElement.className, "webdeveloper-unhidden");
inputElement.setAttribute("type", "hidden");
}
// If displaying
if(display)
{
spanElement = pageDocument.createElement("span");
text = "<input";
// If the element is hidden
if(inputElement.hasAttribute("type") && inputElement.getAttribute("type").toLowerCase() == "hidden")
{
inputElement.className += " webdeveloper-unhidden";
inputElement.setAttribute("type", "text");
}
// This stops the fields reordering
inputElement.setAttribute("type", inputElement.getAttribute("type"));
// If the element has an id attribute
if(inputElement.hasAttribute("id"))
{
text += ' id="' + inputElement.getAttribute("id") + '"';
}
// If the element has an name attribute
if(inputElement.hasAttribute("name"))
{
text += ' name="' + inputElement.getAttribute("name") + '"';
}
// If the element is a checkbox or radio button
if(inputElement.hasAttribute("type") && (inputElement.getAttribute("type").toLowerCase() == "checkbox" || inputElement.getAttribute("type").toLowerCase() == "radio"))
{
text += ' value="' + inputElement.value + '"';
}
// If the element has a size attribute
if(inputElement.hasAttribute("size"))
{
text += ' size="' + inputElement.getAttribute("size") + '"';
}
// If the element has a maxlength attribute
if(inputElement.hasAttribute("maxlength"))
{
text += ' maxlength="' + inputElement.getAttribute("maxlength") + '"';
}
text += ">";
spanElement.setAttribute("class", "webdeveloper-display-form-details");
spanElement.setAttribute("title", text);
spanElement.appendChild(pageDocument.createTextNode(text));
inputElement.parentNode.insertBefore(spanElement, inputElement);
}
}
// If displaying
if(display)
{
buttonElementList = pageDocument.getElementsByTagName("button");
buttonElementsLength = buttonElementList.length;
selectElementList = pageDocument.getElementsByTagName("select");
selectElementsLength = selectElementList.length;
textAreaElementList = pageDocument.getElementsByTagName("textarea");
textAreaElementsLength = textAreaElementList.length;
// Loop through all the button tags
for(j = 0; j < buttonElementsLength; j++)
{
buttonElement = buttonElementList[j];
spanElement = pageDocument.createElement("span");
text = "<button";
// If the element has an id attribute
if(buttonElement.hasAttribute("id"))
{
text += ' id="' + buttonElement.getAttribute("id") + '"';
}
// If the element has an name attribute
if(buttonElement.hasAttribute("name"))
{
text += ' name="' + buttonElement.getAttribute("name") + '"';
}
text += ">";
spanElement.setAttribute("class", "webdeveloper-display-form-details");
spanElement.setAttribute("title", text);
spanElement.appendChild(pageDocument.createTextNode(text));
buttonElement.parentNode.insertBefore(spanElement, buttonElement);
}
// Loop through all the select tags
for(j = 0; j < selectElementsLength; j++)
{
selectElement = selectElementList[j];
spanElement = pageDocument.createElement("span");
text = "<select";
// If the element has an id attribute
if(selectElement.hasAttribute("id"))
{
text += ' id="' + selectElement.getAttribute("id") + '"';
}
// If the element has an name attribute
if(selectElement.hasAttribute("name"))
{
text += ' name="' + selectElement.getAttribute("name") + '"';
}
text += ">";
spanElement.setAttribute("class", "webdeveloper-display-form-details");
spanElement.setAttribute("title", text);
spanElement.appendChild(pageDocument.createTextNode(text));
selectElement.parentNode.insertBefore(spanElement, selectElement);
}
// Loop through all the textarea tags
for(j = 0; j < textAreaElementsLength; j++)
{
textAreaElement = textAreaElementList[j];
spanElement = pageDocument.createElement("span");
text = "<textarea";
// If the element has an id attribute
if(textAreaElement.hasAttribute("id"))
{
text += ' id="' + textAreaElement.getAttribute("id") + '"';
}
// If the element has an name attribute
if(textAreaElement.hasAttribute("name"))
{
text += ' name="' + textAreaElement.getAttribute("name") + '"';
}
text += ">";
spanElement.setAttribute("class", "webdeveloper-display-form-details");
spanElement.setAttribute("title", text);
spanElement.appendChild(pageDocument.createTextNode(text));
textAreaElement.parentNode.insertBefore(spanElement, textAreaElement);
}
}
}
webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/display_form_details.css", "webdeveloper-display-form-details");
webdeveloper_toggleFeatureTooltipStyles(element, "webdeveloper-display-form-details-tooltips", "*:before, span.webdeveloper-display-form-details");
}
// Enables form auto completion
function webdeveloper_enableFormAutoCompletion()
{
var autoCompleteElements = null;
var autoCompleteElementsLength = null;
var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
var documentLength = documentList.length;
var enabledElements = 0;
// Loop through the documents
for(var i = 0; i < documentLength; i++)
{
autoCompleteElements = webdeveloper_evaluateXPath(documentList[i], "//*[@autocomplete]");
autoCompleteElementsLength = autoCompleteElements.length;
// Loop through the auto complete elements
for(var j = 0; j < autoCompleteElementsLength; j++)
{
autoCompleteElements[j].removeAttribute("autocomplete");
enabledElements++;
}
}
// If the hide informational dialogs preference is not set
if(!webdeveloper_getBooleanPreference("webdeveloper.informational.dialogs.hide", true))
{
var stringBundle = document.getElementById("webdeveloper-string-bundle");
var title = stringBundle.getString("webdeveloper_enableAutoCompletion");
// If one element was enabled
if(enabledElements == 1)
{
webdeveloper_informationalDialog(title, stringBundle.getString("webdeveloper_enableAutoCompletionSingleResult"));
}
else
{
webdeveloper_informationalDialog(title, stringBundle.getFormattedString("webdeveloper_enableAutoCompletionMultipleResult", [enabledElements]));
}
}
}
// Enables all the form fields
function webdeveloper_enableFormFields()
{
var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
var documentLength = documentList.length;
var enabledFields = 0;
var form = null;
var formElement = null;
var formElementList = null;
var formElements = null;
var formElementsLength = null;
var formLength = null;
var formList = null;
var imageInputElement = null;
var imageInputElements = null;
var imageInputElementsLength = null;
// Loop through the documents
for(var i = 0; i < documentLength; i++)
{
formList = documentList[i].forms;
formLength = formList.length;
// Loop through the forms
for(var j = 0; j < formLength; j++)
{
form = formList[j];
formElementList = new Array();
formElements = form.elements;
formElementsLength = formElements.length;
imageInputElements = webdeveloper_evaluateXPath(form, "//input[@type='image']");
imageInputElementsLength = imageInputElements.length;
// Loop through the form elements
for(var k = 0; k < formElementsLength; k++)
{
formElementList.push(formElements[k]);
}
// Loop through the image input elements
for(k = 0; k < imageInputElementsLength; k++)
{
formElementList.push(imageInputElements[k]);
}
formElementsLength = formElementList.length;
// Loop through the form elements
for(k = 0; k < formElementsLength; k++)
{
formElement = formElementList[k];
// If the form element is disabled
if(formElement.disabled)
{
formElement.disabled = false;
enabledFields++;
}
}
}
}
// If the hide informational dialogs preference is not set
if(!webdeveloper_getBooleanPreference("webdeveloper.informational.dialogs.hide", true))
{
var stringBundle = document.getElementById("webdeveloper-string-bundle");
var title = stringBundle.getString("webdeveloper_enableFormFields");
// If one field was enabled
if(enabledFields == 1)
{
webdeveloper_informationalDialog(title, stringBundle.getString("webdeveloper_enableFormFieldsSingleResult"));
}
else
{
webdeveloper_informationalDialog(title, stringBundle.getFormattedString("webdeveloper_enableFormFieldsMultipleResult", [enabledFields]));
}
}
}
// Makes all the form fields writable
function webdeveloper_makeFormFieldsWritable()
{
var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
var documentLength = documentList.length;
var readOnlyElements = null;
var readOnlyElementsLength = null;
var writableFields = 0;
// Loop through the documents
for(var i = 0; i < documentLength; i++)
{
readOnlyElements = webdeveloper_evaluateXPath(documentList[i], "//*[@readonly]");
readOnlyElementsLength = readOnlyElements.length;
// Loop through all the input tags
for(var j = 0; j < readOnlyElementsLength; j++)
{
readOnlyElements[j].removeAttribute("readonly");
writableFields++;
}
}
// If the hide informational dialogs preference is not set
if(!webdeveloper_getBooleanPreference("webdeveloper.informational.dialogs.hide", true))
{
var stringBundle = document.getElementById("webdeveloper-string-bundle");
var title = stringBundle.getString("webdeveloper_makeFormFieldsWritable");
// If one field was made writable
if(writableFields == 1)
{
webdeveloper_informationalDialog(title, stringBundle.getString("webdeveloper_makeFormFieldsWritableSingleResult"));
}
else
{
webdeveloper_informationalDialog(title, stringBundle.getFormattedString("webdeveloper_makeFormFieldsWritableMultipleResult", [writableFields]));
}
}
}
// Populates the form fields on the page
function webdeveloper_populateFormFields()
{
var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
var documentLength = documentList.length;
var inputElement = null;
var inputElementList = null;
var inputElementName = null;
var inputElementsLength = null;
var inputElementType = null;
var option = null;
var options = null;
var optionsLength = null;
var pageDocument = null;
var selectElement = null;
var selectElementList = null;
var selectElementsLength = null;
var textAreaElement = null;
var textAreaElementList = null;
var textAreaElementsLength = null;
// Loop through the documents
for(var i = 0; i < documentLength; i++)
{
pageDocument = documentList[i];
inputElementList = pageDocument.getElementsByTagName("input");
inputElementsLength = inputElementList.length;
selectElementList = pageDocument.getElementsByTagName("select");
selectElementsLength = selectElementList.length;
textAreaElementList = pageDocument.getElementsByTagName("textarea");
textAreaElementsLength = textAreaElementList.length;
// Loop through all the input tags
for(var j = 0; j < inputElementsLength; j++)
{
inputElement = inputElementList[j];
inputElementType = inputElement.getAttribute("type");
// If the input element is not disabled
if(!inputElement.disabled)
{
// If the input element value is not set and the type is not set or is password or text
if(inputElement.value.trim() == "" && (!inputElementType || inputElementType == "password" || inputElementType == "text"))
{
inputElementName = inputElement.getAttribute("name");
// If the input element type is text, the name contains email and the populate form fields email preference is set
if(inputElementType == "text" && inputElementName.toLowerCase().indexOf("email") != -1 && webdeveloper_isPreferenceSet("webdeveloper.populate.form.fields.email"))
{
inputElement.value = webdeveloper_getStringPreference("webdeveloper.populate.form.fields.email", true);
}
else if(inputElementType == "password")
{
inputElement.value = "password";
}
else
{
inputElement.value = inputElementName;
}
}
else if(inputElementType == "checkbox" || inputElementType == "radio")
{
inputElement.checked = true;
}
}
}
// Loop through all the select tags
for(j = 0; j < selectElementsLength; j++)
{
selectElement = selectElementList[j];
// If the select element is not disabled and the value is not set
if(!selectElement.disabled && selectElement.value.trim() == "")
{
options = selectElement.options;
optionsLength = options.length;
// Loop through the options
for(var k = 0; k < optionsLength; k++)
{
option = options.item(k);
// If the optionis set and the option text and option value are not empty
if(option && option.text.trim() != "" && option.value.trim() != "")
{
selectElement.selectedIndex = k;
break;
}
}
}
}
// Loop through all the text area tags
for(j = 0; j < textAreaElementsLength; j++)
{
textAreaElement = textAreaElementList[j];
// If the text area element is not disabled and the value is not set
if(!textAreaElement.disabled && textAreaElement.value.trim() == "")
{
textAreaElement.value = textAreaElement.getAttribute("name");
}
}
}
}
// Removes all maximum lengths on form elements
function webdeveloper_removeMaximumLengths()
{
var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
var documentLength = documentList.length;
var maximumLengthElements = null;
var maximumLengthElementsLength = null;
var removed = 0;
// Loop through the documents
for(var i = 0; i < documentLength; i++)
{
maximumLengthElements = webdeveloper_evaluateXPath(documentList[i], "//input[@maxlength]");
maximumLengthElementsLength = maximumLengthElements.length;
// Loop through all the input tags
for(var j = 0; j < maximumLengthElementsLength; j++)
{
maximumLengthElements[j].removeAttribute("maxlength");
removed++;
}
}
// If the hide informational dialogs preference is not set
if(!webdeveloper_getBooleanPreference("webdeveloper.informational.dialogs.hide", true))
{
var stringBundle = document.getElementById("webdeveloper-string-bundle");
var title = stringBundle.getString("webdeveloper_removeMaximumLengths");
// If one maxlength was removed
if(removed == 1)
{
webdeveloper_informationalDialog(title, stringBundle.getString("webdeveloper_removeMaximumLengthsSingleResult"));
}
else
{
webdeveloper_informationalDialog(title, stringBundle.getFormattedString("webdeveloper_removeMaximumLengthsMultipleResult", [removed]));
}
}
}
// Shows all passwords on a form
function webdeveloper_showPasswords()
{
var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
var documentLength = documentList.length;
var inputElement = null;
var inputElementList = null;
var inputElementsLength = null;
var pageDocument = null;
var shownPasswords = 0;
// Loop through the documents
for(var i = 0; i < documentLength; i++)
{
pageDocument = documentList[i];
inputElementList = pageDocument.getElementsByTagName("input");
inputElementsLength = inputElementList.length;
// Loop through all the input tags
for(var j = 0; j < inputElementsLength; j++)
{
inputElement = inputElementList[j];
// If the element is password
if(inputElement.hasAttribute("type") && inputElement.getAttribute("type").toLowerCase() == "password")
{
inputElement.setAttribute("type", "text");
shownPasswords++;
}
else
{
// This stops the fields reordering
inputElement.setAttribute("type", inputElement.getAttribute("type"));
}
}
}
// If the hide informational dialogs preference is not set
if(!webdeveloper_getBooleanPreference("webdeveloper.informational.dialogs.hide", true))
{
var stringBundle = document.getElementById("webdeveloper-string-bundle");
var title = stringBundle.getString("webdeveloper_showPasswords");
// If one password was shown
if(shownPasswords == 1)
{
webdeveloper_informationalDialog(title, stringBundle.getString("webdeveloper_showPasswordsSingleResult"));
}
else
{
webdeveloper_informationalDialog(title, stringBundle.getFormattedString("webdeveloper_showPasswordsMultipleResult", [shownPasswords]));
}
}
}
// Updates the forms menu
function webdeveloper_updateFormsMenu(suffix)
{
webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-display-form-details-" + suffix), "checked", "webdeveloper-display-form-details");
}
// Displays all the forms for the page
function webdeveloper_viewFormInformation()
{
var cellDataElement = null;
var cellHeaderElement = null;
var divElement = null;
var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
var documentLength = documentList.length;
var documentURL = null;
var elementStates = null;
var elementStatesLength = null;
var elementType = null;
var elementValue = null;
var form = null;
var formElement = null;
var formElementId = null;
var formElementList = null;
var formElements = null;
var formElementsLength = null;
var formLength = null;
var formList = null;
var imageInputElements = null;
var imageInputElementsLength = null;
var labelElement = null;
var labelLength = null;
var labelList = null;
var labelValue = null;
var linkElement = null;
var oldTab = getBrowser().selectedTab;
var oldURL = getBrowser().currentURI.spec;
var generatedDocument = webdeveloper_generateDocument("");
var bodyElement = webdeveloper_getDocumentBodyElement(generatedDocument);
var headElement = webdeveloper_getDocumentHeadElement(generatedDocument);
var headerElement = generatedDocument.createElement("h1");
var pageDocument = null;
var pElement = null;
var preElement = null;
var scriptElement = generatedDocument.createElement("script");
var spanElement = null;
var stringBundle = document.getElementById("webdeveloper-string-bundle");
var tableElement = null;
var tableRowElement = null;
var title = stringBundle.getFormattedString("webdeveloper_viewFormInformationTitle", [oldURL]);
generatedDocument.title = title;
webdeveloper_addGeneratedStyles(generatedDocument);
headerElement.appendChild(generatedDocument.createTextNode(title));
bodyElement.appendChild(headerElement);
webdeveloper_addGeneratedTools(generatedDocument);
// Loop through the documents
for(var i = 0; i < documentLength; i++)
{
divElement = generatedDocument.createElement("div");
headerElement = generatedDocument.createElement("h2");
linkElement = generatedDocument.createElement("a");
pageDocument = documentList[i];
documentURL = pageDocument.documentURI;
formList = pageDocument.forms;
formLength = formList.length;
labelList = pageDocument.getElementsByTagName("label");
labelLength = labelList.length;
spanElement = generatedDocument.createElement("span");
linkElement.setAttribute("href", documentURL);
linkElement.appendChild(generatedDocument.createTextNode(documentURL));
headerElement.appendChild(linkElement);
bodyElement.appendChild(headerElement);
headerElement = generatedDocument.createElement("h3");
spanElement.setAttribute("class", "expanded pivot");
headerElement.appendChild(spanElement);
// If there is one form
if(formLength == 1)
{
headerElement.appendChild(generatedDocument.createTextNode(formLength + " " + stringBundle.getString("webdeveloper_form").toLowerCase()));
}
else
{
headerElement.appendChild(generatedDocument.createTextNode(formLength + " " + stringBundle.getString("webdeveloper_forms").toLowerCase()));
}
bodyElement.appendChild(headerElement);
// Loop through the forms
for(var j = 0; j < formLength; j++)
{
form = formList[j];
formElementList = new Array();
formElements = form.elements;
formElementsLength = formElements.length;
headerElement = generatedDocument.createElement("h3");
imageInputElements = webdeveloper_evaluateXPath(form, "//input[@type='image']");
imageInputElementsLength = imageInputElements.length;
tableElement = generatedDocument.createElement("table");
tableRowElement = generatedDocument.createElement("tr");
// Loop through the form elements
for(var k = 0; k < formElementsLength; k++)
{
formElementList.push(formElements[k]);
}
// Loop through the image input elements
for(k = 0; k < imageInputElementsLength; k++)
{
formElementList.push(imageInputElements[k]);
}
formElementsLength = formElementList.length;
headerElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_form")));
divElement.appendChild(headerElement);
// Form id heading
cellHeaderElement = generatedDocument.createElement("th");
cellHeaderElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_id")));
tableRowElement.appendChild(cellHeaderElement);
// Form name heading
cellHeaderElement = generatedDocument.createElement("th");
cellHeaderElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_name")));
tableRowElement.appendChild(cellHeaderElement);
// Form method heading
cellHeaderElement = generatedDocument.createElement("th");
cellHeaderElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_method")));
tableRowElement.appendChild(cellHeaderElement);
// Form action heading
cellHeaderElement = generatedDocument.createElement("th");
cellHeaderElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_action")));
tableRowElement.appendChild(cellHeaderElement);
tableElement.appendChild(tableRowElement);
tableRowElement = generatedDocument.createElement("tr");
// Form id
cellDataElement = generatedDocument.createElement("td");
cellDataElement.appendChild(generatedDocument.createTextNode(form.getAttribute("id")));
tableRowElement.appendChild(cellDataElement);
// Form name
cellDataElement = generatedDocument.createElement("td");
cellDataElement.appendChild(generatedDocument.createTextNode(form.getAttribute("name")));
tableRowElement.appendChild(cellDataElement);
// Form method
cellDataElement = generatedDocument.createElement("td");
cellDataElement.appendChild(generatedDocument.createTextNode(form.getAttribute("method")));
tableRowElement.appendChild(cellDataElement);
// Form action
cellDataElement = generatedDocument.createElement("td");
cellDataElement.appendChild(generatedDocument.createTextNode(form.getAttribute("action")));
tableRowElement.appendChild(cellDataElement);
tableElement.appendChild(tableRowElement);
divElement.appendChild(tableElement);
pElement = generatedDocument.createElement("p");
divElement.appendChild(pElement);
headerElement = generatedDocument.createElement("h3");
tableElement = generatedDocument.createElement("table");
tableRowElement = generatedDocument.createElement("tr");
headerElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_elements")));
divElement.appendChild(headerElement);
// Element index heading
cellHeaderElement = generatedDocument.createElement("th");
cellHeaderElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_index")));
tableRowElement.appendChild(cellHeaderElement);
// Element id heading
cellHeaderElement = generatedDocument.createElement("th");
cellHeaderElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_id")));
tableRowElement.appendChild(cellHeaderElement);
// Element name heading
cellHeaderElement = generatedDocument.createElement("th");
cellHeaderElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_name")));
tableRowElement.appendChild(cellHeaderElement);
tableElement.appendChild(tableRowElement);
// Element type heading
cellHeaderElement = generatedDocument.createElement("th");
cellHeaderElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_type")));
tableRowElement.appendChild(cellHeaderElement);
tableElement.appendChild(tableRowElement);
// Element value heading
cellHeaderElement = generatedDocument.createElement("th");
cellHeaderElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_value")));
tableRowElement.appendChild(cellHeaderElement);
tableElement.appendChild(tableRowElement);
// Element label heading
cellHeaderElement = generatedDocument.createElement("th");
cellHeaderElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_label")));
tableRowElement.appendChild(cellHeaderElement);
// Element size heading
cellHeaderElement = generatedDocument.createElement("th");
cellHeaderElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_size")));
tableRowElement.appendChild(cellHeaderElement);
tableElement.appendChild(tableRowElement);
// Element maximum length heading
cellHeaderElement = generatedDocument.createElement("th");
cellHeaderElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_maximumLength")));
tableRowElement.appendChild(cellHeaderElement);
tableElement.appendChild(tableRowElement);
// Element state heading
cellHeaderElement = generatedDocument.createElement("th");
cellHeaderElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_state")));
tableRowElement.appendChild(cellHeaderElement);
tableElement.appendChild(tableRowElement);
// Loop through the form elements
for(k = 0; k < formElementsLength; k++)
{
elementStates = new Array();
elementValue = "";
formElement = formElementList[k];
formElementId = formElement.getAttribute("id");
elementType = formElement.tagName.toLowerCase();
labelElement = "";
labelValue = "";
tableRowElement = generatedDocument.createElement("tr");
// If this is an even row
if(k % 2 != 0)
{
tableRowElement.setAttribute("class", "shaded");
}
// If the element has an id
if(formElementId)
{
// Loop through the labels
for(var l = 0; l < labelLength; l++)
{
labelElement = labelList[l];
// If this is the label for the element
if(labelElement.hasAttribute("for") && labelElement.getAttribute("for") == formElementId)
{
labelValue = labelElement.innerHTML;
}
}
}
// If this is an input element
if(elementType == "input")
{
elementType = formElement.getAttribute("type");
elementValue = formElement.value;
}
else if(elementType == "textarea")
{
elementValue = formElement.value;
}
// If the element is checked
if(formElement.checked)
{
elementStates.push("Checked");
}
// If the element is disabled
if(formElement.disabled)
{
elementStates.push("Disabled");
}
// If the element is read only
if(formElement.readOnly)
{
elementStates.push("Readonly");
}
elementStatesLength = elementStates.length;
// Element index
cellDataElement = generatedDocument.createElement("td");
cellDataElement.appendChild(generatedDocument.createTextNode(k));
tableRowElement.appendChild(cellDataElement);
tableElement.appendChild(tableRowElement);
// Element id
cellDataElement = generatedDocument.createElement("td");
cellDataElement.appendChild(generatedDocument.createTextNode(formElementId));
tableRowElement.appendChild(cellDataElement);
// Element name
cellDataElement = generatedDocument.createElement("td");
cellDataElement.appendChild(generatedDocument.createTextNode(formElement.getAttribute("name")));
tableRowElement.appendChild(cellDataElement);
tableElement.appendChild(tableRowElement);
// Element type
cellDataElement = generatedDocument.createElement("td");
cellDataElement.appendChild(generatedDocument.createTextNode(elementType));
tableRowElement.appendChild(cellDataElement);
tableElement.appendChild(tableRowElement);
// Element value
cellDataElement = generatedDocument.createElement("td");
cellDataElement.appendChild(generatedDocument.createTextNode(elementValue));
tableRowElement.appendChild(cellDataElement);
tableElement.appendChild(tableRowElement);
// Element label
cellDataElement = generatedDocument.createElement("td");
cellDataElement.appendChild(generatedDocument.createTextNode(labelValue));
tableRowElement.appendChild(cellDataElement);
tableElement.appendChild(tableRowElement);
// Element size
cellDataElement = generatedDocument.createElement("td");
cellDataElement.appendChild(generatedDocument.createTextNode(formElement.getAttribute("size")));
tableRowElement.appendChild(cellDataElement);
tableElement.appendChild(tableRowElement);
// Element maximum length
cellDataElement = generatedDocument.createElement("td");
cellDataElement.appendChild(generatedDocument.createTextNode(formElement.getAttribute("maxlength")));
tableRowElement.appendChild(cellDataElement);
tableElement.appendChild(tableRowElement);
// Element state
cellDataElement = generatedDocument.createElement("td");
// Loop through the element states
for(l = 0; l < elementStatesLength; l++)
{
pElement = generatedDocument.createElement("p");
pElement.appendChild(generatedDocument.createTextNode(elementStates[l]));
cellDataElement.appendChild(pElement);
}
tableRowElement.appendChild(cellDataElement);
tableElement.appendChild(tableRowElement);
}
tableElement.setAttribute("class", "sortable");
divElement.setAttribute("class", "output");
divElement.appendChild(tableElement);
divElement.appendChild(generatedDocument.createElement("hr"));
bodyElement.appendChild(divElement);
}
}
scriptElement.setAttribute("defer", "defer");
scriptElement.setAttribute("src", "chrome://webdeveloper/content/common/dom.js");
scriptElement.setAttribute("type", "text/javascript");
headElement.appendChild(scriptElement);
scriptElement = generatedDocument.createElement("script");
scriptElement.setAttribute("defer", "defer");
scriptElement.setAttribute("src", "chrome://webdeveloper/content/common/xpath.js");
scriptElement.setAttribute("type", "text/javascript");
headElement.appendChild(scriptElement);
scriptElement = generatedDocument.createElement("script");
scriptElement.setAttribute("defer", "defer");
scriptElement.setAttribute("src", "chrome://webdeveloper/content/generated/output_pivot.js");
scriptElement.setAttribute("type", "text/javascript");
headElement.appendChild(scriptElement);
scriptElement = generatedDocument.createElement("script");
scriptElement.setAttribute("defer", "defer");
scriptElement.setAttribute("src", "chrome://webdeveloper/content/generated/table_sort.js");
scriptElement.setAttribute("type", "text/javascript");
headElement.appendChild(scriptElement);
// If the open tabs in background preference is set to true
if(webdeveloper_getBooleanPreference("webdeveloper.open.tabs.background", true))
{
getBrowser().selectedTab = oldTab;
}
}